home *** CD-ROM | disk | FTP | other *** search
-
- Listing 7: Function parse() of Pif
-
- BOOL Pif::parse()
- {
- Token * pTemp;
-
- // create a expression object
- Pexpression * pTempExpression = new Pexpression;
- if (pTempExpression == NULL) // check out of memory
- return FALSE;
- else
- { pTempExpression->parse(); // parse an expression
- delete pTempExpression; // clean up
- } // test for the expression syntax
-
- pTemp = gpTokenizer->getToken(); // get a new token
-
- if (pTemp->tokentype == tkthen) // check for the token then
- {
- pTemp = gpTokenizer->lookToken();
-
- while ((pTemp->tokentype != tkelse) && // loop to parse statements
- (pTemp->tokentype != tkendif) && // after the token then
- (!gpTokenizer->eof()) )
- {
- // create a statement object
- Pstatement * pMyStatement = new Pstatement;
- if (pMyStatement == NULL) // check out of memory
- return FALSE;
- else
- { pMyStatement->parse(); // call the parse function
- delete pMyStatement; // clean up
- }
- pTemp = gpTokenizer->peekToken(); // look ahead token
- }
- }
- else ; //output error message
- }
-
-